// never 表示永远不会发生值的类型，
// 如果一个函数是死循环或者抛出一个异常，这个函数不会返回任何东西，但是使用void也不合适，可以选择使用never 

function foo(): never {
  // 死循环.永远不会有结果
  while (true) {

  }
}

function fn(message: string | number) {
  switch (typeof message) {
    case 'string':
      console.log('string的处理方式');
      break
    case 'number':
      console.log('number的处理方式');
      break
    default:
      const res: never = message
  }
}


fn('123');
fn(123);

// 张三 想给这个核心函数传入一个 boolen ，张三的本能反应就是给这个核心函数添加上一个 boolen的枚举，就像下面这样
// function fn(message: string | number | boolean)
// 但是这样加上以后 res就会被赋值成 message报错，因为res是never类型
// 代码报错就被促使开发人员去关注核心函数的代码逻辑，加上关于boolean的判断，使得代码更加的严谨


// fn(true)

export { }